#ifndef LOMTYPEDEFSHH
#define LOMTYPEDEFSHH
#include "stdincludes.hh"
#include "typedefs.hh"
#include "lom-enums.hh"

namespace lom
{
    class LomRoot;

    typedef licada::uint32 THandle;
    typedef std::map< THandle, LomRoot* > THandleRootMap;
    typedef std::map< THandle, licada::uint32 > THandleUInt32Map;
    typedef std::map< THandle, THandle > THandleHandleMap;

    typedef licada::TUInt32Vector THandleVector;

    extern licada::TNameType* g_dataTypeNames;

    class LomValue;
    typedef std::vector<LomValue*> TValueVector;
    typedef std::map< licada::TNameStr, LomValue* > TNameValueMap;
    
    class ILomTransactionEvent;
    typedef std::vector< ILomTransactionEvent* > TLomTransactionEventVector;
    typedef std::pair< TLomTransactionEventVector, licada::uint32 > TLomTransactionEventVectorUInt32Pair;
    typedef std::vector< TLomTransactionEventVectorUInt32Pair > TLomTransactionEventVectorUInt32PairVector;

    class ILomTransactionHandler;
    typedef std::vector< ILomTransactionHandler* > TLomTransactionHandlerVector;

    class ILomEventHandler;
    typedef std::vector<ILomEventHandler*> TEventHandlerVector;
}
#endif
